package com.example.tys.oomdata.sqLiteData;

import java.util.List;

/**
 * @author tys
 * @date 2018/3/9
 */

public interface IBaseDao<T> {

    /**
     * 对象插入数据库
     *
     * @param entry
     * @return
     */
    long insert(T entry);

    /**
     * 批量数据插入数据库
     *
     * @param entry
     * @return
     */
    long insert(List<T> entry);

    /**
     * 删除数据库中一行
     *
     * @param entry
     * @return
     */
    long delete(T entry);


    /**
     * 更新
     *
     * @param oldEntry
     * @param entry
     * @return
     */
    long update(T oldEntry, T entry);


    /**
     * 查询
     *
     * @param where 这个参数怎么设计？
     *              需要说明：1.那个对象（那一张表）2.这个表的哪一些字段 3.这些字段怎么去组合（and  or）
     *              解决：通过编译时注解 生成xxxDao类（数据库中所有字段， 建表命令， 构建查询命令（联合查询）..）
     * @param orderBy
     * @param offset
     * @param limit
     * @return
     */
    List<T> query(T where, String orderBy, Integer offset, Integer limit);

}
